Windows-based flowcharting and code generation system

ABSTRACT

A machine control system ( 130 ) includes a computer ( 132 ) that generates, edits and displays a continuous multi-block flowchart representing a program and compiles the program from the flowchart to control the operations of a machine ( 140 ). The system ( 130 ) also includes a debugger ( 146 ) for displaying the flowchart in a debugger window ( 170 ) for runtime execution control of the program.

TECHNICAL FIELD

[0001] The subject invention relates to a computerized machine controlsystem which displays a flowchart of a machine control process basedupon operator input and automatically generates software code from theflowchart to implement the machine control process.

BACKGROUND OF THE INVENTION

[0002] The U.S. Pat. No. 4,852,047 shows an improved machine programmingand control system including the utilization of a continuous,multiple-block, flowchart or charts, all or a portion of which isdisplayed. Each entered flowchart is executed without conversion toother languages, such that machines are controlled in accordance withthe flowcharts that are displayed. Multiple flowcharts may be enteredeach to separately control different machines or different parts of thesame machine. The flowcharts are displayed in a multiple-blockpresentation and a block numbering system permits rapid on-screengeneration of flowcharts, editing of the flowcharts, and debugging ofthe flowcharts through the utilization of an interrupt. A uniquelyimproved debugging system, active on an execution interrupt, permitsrapid value changing for selected displayed flowchart blocks and permitsa single-scan program rerun for verification. Upon run-timeinterruption, either the number of the flowchart block being executed atthe time of interruption is automatically displayed or the block ishighlighted so that a flowchart or charts may be edited and correctedon-the-fly. A new formatting system, inserts a block number format entryin the object program which is the output of the compiler, which entryis skipped by Executive program during run-time execution, but which isretrievable upon a debugging cycle.

[0003] In the U.S. Pat. No. 4,956,773, using a display terminal forconversation, a module structure diagram (schemata expressive of theconnectional relations among respective program modules) is created, anda processing flow diagram (a kind of processing flowchart), an internaldata definition diagram (schemata for specifying the formats etc. ofarguments, common data between the modules, etc.) are created for eachmodule, the created contents being stored in a memory. Further, theschematic information items of the module structure diagram, processingflow diagram, internal data definition diagram and interface datadefinition diagram are read out from the memory for each module and havestereotyped sentences and symbols added thereto, to generate theindividual sentences of a source program. These sentences are editedaccording to the rules of a language, to complete the source program. Ifnecessary, the various diagrams are printed out and utilized as programspecifications.

[0004] The U.S. Pat. No. 5,327,568 shows an apparatus for supportingdevelopment of a graphic data driven program including a data drivenmechanism enabling instructions of the data driven program to beexecuted whenever all input data necessary for executing theinstructions is available. The apparatus includes a terminal device forinputting and displaying a graphic data driven program, an inputtransforming section for transforming the inputted graphic data drivenprogram into an intermediate file by referring to an instructioninformation data base, a wiring table transforming section fortransforming the inputted graphic data driven program into a wiringtable of instructions expressed in text which is independent of a targetmachine by referring to the intermediate file, a compile section fortransforming the wiring table into an instruction template describedwith a language depending on the target machine, an instructionexecution section for executing the instruction template, an instructionexecution displaying section for displaying results of executing theinstruction template superposed on the displayed graphic data drivenprogram, and an instruction information tracing section for comparingactual results of execution the instruction template stored in a tracedinformation file with correct results of executing the instructiontemplate stored in a correct data-base.

SUMMARY OF THE INVENTION AND ADVANTAGES

[0005] The present invention concerns a machine programming and controlsystem including means for editing and generating a continuousmulti-block flowchart representing a program for controlling theoperations of a machine, means for displaying the flowchart, continuousand contiguous portions of the flowchart containing more than oneflowchart block being displayed, means for directly compiling theprogram from the flowchart, and means for executing the compiled programrepresented by the flowchart such that the machine is controlled inaccordance with a displayed flowchart. A computer in the system includesthe means for editing and generating connected to the machine and thedisplay means connected to the means for editing and generating andincluding a screen divided into a plurality of columns and rows fordisplaying the flowchart with each block of a plurality of blocks beingpositioned at an associated intersection of one of the columns and oneof the rows.

[0006] A method of machine programming and control according to thepresent invention includes editing and generating a continuousmulti-block flowchart representing a program for controlling theoperations of a machine, displaying the flowchart, continuous andcontiguous portions of the flowchart containing more than one flowchartblock being displayed, directly compiling the program from theflowchart, and executing the compiled program represented by theflowchart such that the machine is controlled in accordance with adisplayed flowchart. The method further includes the steps of: providingthe computer including the means for editing and generating a continuousmulti-block flowchart representing a program for controlling theoperations of the machine connected to the computer; providing thedisplay means connected to the means for editing and generating; anddisplaying the screen on the display means divided into a plurality ofcolumns and rows for displaying the flowchart with each block of aplurality of blocks being positioned at an associated intersection ofone of the columns and one of the rows.

[0007] It is an object of the present invention to reduce the costsassociated with machine control systems by reducing overall life cyclecosts of automation equipment and by optimizing productivity.

BRIEF DESCRIPTION OF THE DRAWINGS

[0008] Other advantages of the present invention will be readilyappreciated as the same becomes better understood by reference to thefollowing detailed description when considered in connection with theaccompanying drawings wherein:

[0009]FIG. 1 is a schematic view of a prior art machine control systemoperating from flowcharts to control multiple machines;

[0010]FIG. 2A and 2B show an original flowchart and a change made aftera run-time interrupt to permit on-the-fly changes and program reruns inthe machine control system shown in the FIG. 1;

[0011]FIG. 3 is a block diagram of the machine control system shown inFIG. 1 illustrating the display of continuous flowcharts, flowchartblock numbers and the debugger and interrupt system;

[0012]FIG. 4A is a block diagram of another prior art programmablecontroller system;

[0013]FIG. 4B is a block diagram of a prior art flowchart driven machinecontrol involving a single flowchart block display;

[0014]FIG. 5 is a block diagram of a machine control system inaccordance with the present invention;

[0015]FIG. 6A and 6B show a flowchart generated and displayed by themachine control system shown in the FIG. 5;

[0016]FIG. 7 shows a split screen flowchart generated and displayed bythe machine control system shown in the FIG. 5; and

[0017]FIG. 8 shows a debugging window generated and displayed by themachine control system shown in the FIG. 5.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT

[0018] The FIGS. 1 through 4B correspond to like numbered drawings inthe U.S. Pat. No. 4,852,047 which patent is incorporated herein byreference. Referring to the FIG. 1, a prior art machine control systemgenerally designated by reference character 10 is shown coupled to threedifferent robotic machines 12, 14 and 16 via buses 18, 20, and 22,respectively. The machine control system includes a CRT-type display ormonitor 24 on which are presented three different flowcharts 26, 28 and30 with each of the depicted flowcharts being a section of the largerflowchart to which is belongs. The machine control system 10 isdescribed in more detail in the referenced patent. As will be described,the displayed flowcharts are also carried in the memory of the CPU usedin the machine control system, which, in one embodiment utilizes aprogrammable personal computer or a like machine which has a keyboard orother entry device 32 and is provided with a debugging system 34.

[0019] It is one of the features of the subject prior art machinecontrol system 10 that the flowcharts which are displayed on the monitor24, are directly converted into machine language object code whichresults in the appropriate I/O signals being applied to the buses 18, 20and 22 respectively to control the respective machines through directexecution of the flowchart. The flowchart is executed in the sense thatits image is compiled within the machine control system and the datatherefrom is loaded into an Executive program which includes a logicsolver, and an I/O scanner. The output of the I/O scanner drives an I/Odevice or module, as will be described. The I/O module drives therespective machines or machine elements in accordance with the compiledand executed flowchart.

[0020] It is a primary feature of the prior art system 10 that theflowcharts are presented on the display in a continuous and contiguousform so that they may be readily entered into the editor portion of theCPU and also easily edited, from whence they are directly executed afterthey are compiled. Thus, the display of the continuous or contiguousflowcharts, or portions thereof, provides for ease of editing as well asentry, with the debugging unit 34 providing for ease of debugging anoriginal program during a run-time execution of the program.

[0021] Again, as will be described later, in the debugging phase of themachine control system, the debugger 34, upon interrupt of the executionof the flowchart, takes control over the machine control system anddisplays a highlighted flowchart element on the display or monitor 24,which flowchart block is the one being executed at the time of theinterrupt of the machine control. Alternatively, as will be seen, themonitor 24 may display a listing of all of the flowchart block numbers,which block numbers correspond to the blocks being executed at the timeof the interrupt. From that display, one can call up through thedebugger the particular flowchart block, change its value via the keypad32, and through a single scan execute the altered program to ascertainif the machine is behaving in the manner prescribed.

[0022] Referring now to FIG. 2A a typical flowchart to be executed isillustrated to include flowchart blocks 40, 42, 44, 46, 48, 49, 50, 52,53 and 54. These flowchart blocks define a portion of a continuousflowchart, in which during an interrupt, the flowchart block 52 may behighlighted by the aforementioned debugger. It can be seen in the FIG.2B that an additional set of flowchart blocks 56 has been added in aloop illustrated by a line 58 to correct whatever was the problem withthe initial program. Thereafter, upon recompiling, the programillustrated in the FIG. 2B is executed via the system of the FIG. 1,with the simple editing having been accomplished through the addition ofan additional set of blocks in the displayed flowchart.

[0023] While additional flowchart blocks have been added to the initialflowchart as illustrated in the FIG. 2B, it is sometimes only necessaryto change the values of pre-existing flowchart blocks. In this case, thedebugger does not require recompiling of the altered program but rather,in a single-scan, will execute the displayed changes in the program,assuming the blocks had merely been altered in terms of value changes.

[0024] This is an extremely advantageous way of on-the-fly editing ofprogrammable machines in that displayed values may be changed in thedebugger, and the displayed values executed without going through acomplete recompile. Should more extensive change be made to the program,the debugger allows the operator to isolate and display the particularprogram blocks which were executing at the time of the interrupt andthen re-edit the program through an editor, which will be describedhereinafter. After the more complicated changes have been made by theeditor, they are compiled by the compiler and loaded into the Executiveprogram so that the machine may be properly controlled.

[0025] What will be apparent from the FIG. 2A and 2B diagrams is thatwhat is presented to the operator is a continuous flowchart or portionthereof, in which the flow blocks are contiguous and numbered; and inwhich the values are displayed immediately adjacent the flowchart blocksin the appropriate positions for the particular block. This is unlikeprevious systems in which if flowcharts were used, only an individualblock was displayed.

[0026] Having displayed the flowchart block numbers along with theflowchart blocks, it is possible to alter the program simply and easilyby editing on the screen, in which screen entries are automaticallymirrored into the editor or graphic memory within the computer utilized.Thus, there is a correspondence between the displayed flowchart, thegraphic memory, the editor memory and the object memory in the Executiveprogram. This correspondence allows complete confidence that theflowchart, once edited on the screen, will be executed in precisely themanner presented by the screen.

[0027] Referring now to the FIG. 3, the machine control system 10 isseen to include a programmable computer or CPU designated by a dottedbox 90 and an input device 92, such as the aforementioned keyboard. TheCPU 90 includes a flowchart development editor 94, a compiler 96 whichproduces object data 98 that is loaded into an executive unit 60 whichincludes an executive program that performs logic solving and I/Oscanning functions. This unit provides signals through an I/O device 62to a machine 64.

[0028] The flowchart development editor includes a disk memory 66, asillustrated, and a utilities package 68 which, in general, permits thedevelopment of flowchart symbology on the display 24, as illustrated tothe right of the CPU 90. Note that the flowchart generating programresides in the editor. It will be appreciated that blocks and theflowcharts are numbered by numbers such as 1.00; 2.00; . . . 8.00. Theseblock numbers identify the blocks, with the lines describing theparticular order in which they are desired to be run.

[0029] As also illustrated, the object data which is represented by theblock 98 may be coupled to a microprocessor 70 programmed with theaforementioned Executive program. The microprocessor 70, with itsExecutive program takes the place of the unit 60 and may be utilizedexteriorly of the CPU to run various machines. In other words, the unit60 of the CPU may be replaced with a preprogrammed microprocessor which,in essence, performs the same function.

[0030] It will noted that the debugger 34, is supplied with data on abus 72 from the unit 60, in which when an interrupt 74 is inputted viathe keypad 92, the unit 60 is inhibited while, at the same time,providing data to the debugger 34 to indicate which block or blocks arebeing executed at the time of interrupt. Inhibit signals come from thekeyboard 92 over a bus 76 as illustrated.

[0031] The Debugger 34, in one embodiment, drives the display 24 via abus 77 to highlight the particular block which was executing at the timeof interrupt, this highlighting being shown by a block 78. Also, thedebugger 34 may highlight in a different fashion, the flowchartexecution path to that block as illustrated at 79.

[0032] In an alternative embodiment, upon inhibiting of the Executiveprogram, a list of flowcharts plus the block number in each flowchartwhich was executing at the interrupt is displayed on the display 24.Here this display is illustrated by a reference character 80 which isdriven via data transmitted over a bus 81.

[0033] The debugger functions in the following ways. It will beappreciated that the debugging system for the prior Universal Automationsystems merely permitted reading of inputs, reading and changing thestates of outputs, reading and changing the states of initial flags,reading and changing the values of times, counters, and registers,performing a single-scan execution or resuming or ending execution. Thepresent debugging system performs all of the above with the addedfeature of display so as to alert the user quickly and to provideaccurate change identification. Additionally, the subject debuggerprogram, in one embodiment, highlights changes and flowchart paths toaid debugging. Moreover, the subject system permits full flowchartediting capabilities such as deleting blocks, moving blocks, changingflow paths or routes, and adding blocks. Thus the editor, compiler, anddebugger function are combined into one program for exceptionalflexibility with all relevant data displayed. Once the particularflowchart blocks have been altered to the satisfaction of theprogrammer, the debugger upon command can initiate a single scan, hereillustrated at 82, of the newly debugged program via the keypad 92 sothat it may be executed by the unit 60 via the I/O device 62, such thatmachine operation can be verified. The single-scan data is inputted tothe unit 60 over a bus 84 as illustrated.

[0034] What will be appreciated is that the subject system permits thedisplay of continuous flowchart blocks to aid in the flowchartdevelopment, as well as the debugging process. The block numbers aredisplayed for purpose of enabling the programmer to get back into theflowchart at the required spot and highlights are utilized to indicate,during an interrupt cycle, which blocks in the program were executing atthe time of the interrupt.

[0035] Thus, it may be more appropriate rather than highlighting blockson a screen since so many flowcharts are involved, to provide thelisting as illustrated by the display 80, so that should the machine becarrying a large number of flowcharts, only the flowcharts that arenecessary to be edited will be called up to the display.

[0036] To recapitulate with respect to the prior art and referring nowto FIG. 4A it will be appreciated that in the prior art amanually-derived flowchart 100 was converted to a ladder diagram 102which was then programmed into a programmable controller 104 in ladderlanguage, which programmable controller controlled a machine 106 via anI/O device 108 that produced the requisite signals for machine control.As illustrated, a closed loop 109 from the machine provided theprogrammable controller with inputs derived from the machine so that theprogrammable controller could operate in a closed loop manner. Theclosed loop machines with their programmable controllers are extremelycomplex, as described before, and perhaps unnecessarily so in view ofthe subject flowchart programming and control system.

[0037] The subject system shown in the U.S. Pat. No. 4,852,047 hasincreased flexibility and ease of usage, as compared to the earliersystem illustrated in the FIG. 4B, in which a hand-drawn flowchart 110was, upon prompts, entered in to a flowchart development system 112 withthe aid of a single-block display 114, that involved a block 116 and amenu beside it here illustrated by reference character 118. Theflowchart developer, as described above, drove a compiler 120 which, inturn, drove an executive unit 122 which outputted its logic solver, andI/O scanner through an I/O device 124 to a machine (not shown).

[0038] There is shown in the FIG. 5 a block schematic diagram of amachine control system 130 according to the present invention. Thesystem 130 includes a computer or CPU 132 having an input connected toan output of an input device 134 such as keypad, or a mouse, or a touchscreen. The computer 132 also has an output connected to an input of adisplay device 136, such as a monitor, and a first input/outputconnected to an input/output of a memory device 138, such as a harddrive. The system 130 has a second input/output connected to aninput/output of a machine 140 to be controlled. In general, the system130 operates in a manner similar to the system 10 shown in the FIG. 1 togenerate, edit and display a continuous multi-block flowchartrepresenting a program for controlling the operations of the machine140, with continuous and contiguous portions of the flowchart containingmore than one flowchart block being displayed by the display device 136.The system 140 also compiles the machine control program from theflowchart and executes the compiled program represented by the flowchartsuch that the machine is controlled in accordance with a displayedflowchart, whereby generation and editing of the flowchart isfacilitated by the display of multiple, continuous and contiguousflowchart blocks.

[0039] The computer 132 includes an editor and generator 142, anexecutive 144 and a debugger 146 each having an input connected to theoutput of the input device 134. The editor and generator 142 and thedebugger 146 each have an output connected to the input of the displaydevice 136. The executive 144 has an input/output connected to theinput/output of the machine 140. The editor and generator 142 hasanother output connected to an input of a compiler 148 having an outputconnected to another input of the executive 144. The executive 144 hasan output connected to another input of the debugger 146.

[0040] The means of the system 130 shown in the FIG. 5 correspondgenerally to the means of the prior art system 10 shown in the FIG. 3 asfollows: the programmable computers 132 and 90; the input devices 134and 92; the display devices 136 and 24; the memory devices 138 and 66;the flowchart development editor and generators 142 and 94; theexecutive units 144 and 60; the debuggers 146 and 34; and the compilers148 and 96.

[0041] The system 130 is especially useful in simplifying the shift fromprogrammable logic controllers to off-the-shelf personal computers formanufacturing operations. The system 130 can be run utilizing a Windowsbased operating system, such as Windows 95 or Windows NT available fromMicrosoft Corporation, in the computer 132. Thus, there is provided adrag-and-drop flowchart development editor which substantially reducesdevelopment time by utilizing libraries of reuseable code. In addition,the present invention is compatible with a Hyperkernel™ real-timesubsystem that provides high speed deterministic performance to theWindows NT operating system, a FloPro™ control logic engine forincreasing machine performance and a Hypershare™ software permittingsharing a real-time database with any Windows NT application or network.These software programs are available from Imagination Systems, Inc. ofVirginia Beach, Va.

[0042] There is shown in the FIG. 6A and 6B a flowchart generated anddisplayed by the machine control system 130. The editor and generator142 generates signals to the display device 136 causing the flowchart tobe displayed in a window of a screen presented by the display device.The flowchart can be scrolled to view an upper portion shown in a firstscreen 150 and a lower portion shown in a second screen 152. The windowis divided into a first plurality of columns 154 and a second pluralityof rows 156. The width of each column and the height of each row isautomatically determined in accordance with the size and spacing of thevarious blocks forming the flowchart.

[0043] The system 130 includes several features which reduce the timerequired to create a flowchart or make changes to an existing flowchart.For example, the computer 132 automatically generates high level sourcecode directly from the flowchart being created on the display device136. When the flowchart is edited, the computer 132 automaticallyredraws the interconnecting lines to associated blocks. The flowchartcan be increased or decreased in size, within predetermined limits, inresponse to operator input through the input device 134. A rule base isstored in the memory device 138 and is used by the computer 132 todiscourage unstructured programs. The debugger 146 can drive the displaydevice 136 to highlight one or more selected blocks. The flowchartblocks can be generated in a first color, e.g. a blue block 158, a blockselected to be modified or replaced can be generated in a second color,e.g. a green block 160, and all blocks dependent from the selected blockcan be generated in a third color, e.g. a yellow block 162.

[0044] The computer 132 also can generate a split screen which candisplay the generated code beside the flowchart or an enlarged sectionof the flowchart beside the normal size flowchart. There is shown in theFIG. 7 a split screen 164 having a fight portion 166 displaying theupper portion of the flowchart shown in the FIG. 6A. A left portion 168of the screen 164 can display the flowchart or generated code or anyother desired information.

[0045] There is shown in the FIG. 8 a debugging window 170 generated anddisplayed by the system 130 by double clicking on a flowchart entry in aflowcharts page (not shown). For each flowchart selected, a separatewindow is opened in which the chart is displayed as shown in the FIG. 8.The window 170 includes a tool bar 172 providing access to viewing anddebugging operations. The debugger window 170 displays the chart in thesame format as is used by the editor and is shown in the FIGS. 6A, 6Band 7. As in the editor, tool bar options are provided for zooming inand out, displaying alternate block labels, and disabling the debuggingoption. The remaining options are specific to the debugger and provideruntime execution control, such as setting breakpoints andsingle-stepping through a chart.

[0046] While the system runs (not stopped at a breakpoint), thecurrently active block appears in a contrasting color such as lightgreen. The active block is the block currently being executed in a givenflowchart. This active block is changing much faster than can appear inthe debugger window 170 since the actual display updates at two hundredfifty millisecond intervals and represents a snapshot of the currentchart status.

[0047] Buttons, located in the tool bar 172 extending across the top ofthe window 170, activate tools to control program flow. The function ofthe button appears when the cursor arrow is passed over the button. Forexample, the flowchart can be viewed at several magnification levelsusing a Zoom In button 174 a and a Zoom Out button 174 b on the tool bar172. These options determine how large or small the flowchart appears inthe debugger window 170. When a flowchart is first opened, the chartappears at the maximum magnification level.

[0048] By default, the debugger displays the caption defined for eachflow chart block as the block's label text in the chart. You can togglebetween the default label format and an alternate format using a Toggleor Select Labels tool bar button 176. The alternate format shows theactual commands and conditions contained in the block.

[0049] By default, the debugger comes up enabled. The debugger can bedisabled through the toggling of the tool bar button. This option can beused to speed up performance once the application is stable.

[0050] To select the active block, click on a Select Active Block toolbar button 178. This button selects the currently active block, asdetermined from its last snapshot of the chart status, and the windowautomatically scrolls (if necessary) to display the current block. Ifthe active block is in a subchart, the debugger loads the subchart intothe same window (to bring the block into view). When the selected blockis a subchart block, an Open Subchart tool bar button 180 can be used toload the associated subchart into the current debugger window 170. Oncethe debugger loads a subchart, a Close Subchart tool bar button can beused to close the subchart and redisplay the calling flowchart.

[0051] When a block has been selected, a breakpoint can be set at thatblock with an Insert/Remove Breakpoint tool bar button 182. This buttontoggles the breakpoint state at the currently selected block. It insertsa breakpoint, when no breakpoint exists, and removes an existingbreakpoint. A color of a block that contains a breakpoint appears inred. Current flowchart execution stops when program flow reaches theblock with the breakpoint, during the normal execution cycle. Programflow stops before the chart executes the block with the breakpoint. Whenprogram flow reaches a breakpoint, the current block color changes toyellow and a small red diamond appears to the left of the block. Thediamond indicates that the block contains a breakpoint. By default, theruntime system continues to execute the device input/output scan when achart stops at a breakpoint. This feature can be disabled by toggling aScan I/O During Single Step Mode tool bar button off. Typically, thisoption should remain enabled to prevent device timeouts from occurringwhile single-stepping through a chart. Also by default, only the chartcontaining the breakpoint stops—all other charts continue to runnormally. This feature can be disabled by toggling a Run Charts DuringSingle Step Mode tool bar button off. The Run Charts During Single StepMode should typically remain enabled when working with real devices toprevent unwanted and possible dangerous side effects when all chartssuddenly stop. Use caution when disabling this feature.

[0052] All breakpoints in the currently displayed chart can be removedusing a Remove All Breakpoints tool bar button. When this option isselected, all breakpoints (for the current chart only) are removed. Thisoption does not affect breakpoints in other charts. This button isenabled when there is at least one breakpoint set in the current chart.Also, all breakpoints in all chart threads can be removed using a RemoveAll Breakpoints In All Threads tool bar button. When selected, thisoption removes all breakpoints, even those set in charts that do notcurrently appear in the debugger. This button is enabled when abreakpoint is set in any chart.

[0053] To display a list of breakpoints currently set in all charts, aView Breakpoint List button is used. A window appears with a list ofbreakpoints set in all chart threads. The list includes an entry foreach currently set breakpoint. Each entry includes the main chart threadname, the subchart name (if applicable), and the horizontal and verticalgrid position of the block. A Go tool bar button restarts execution ofthe current chart after it has stopped at a breakpoint. Once restarted,execution continues normally (until program flow reaches anotherbreakpoint). The Go button is only enabled when program flow reaches abreakpoint in the current chart. When a chart stops at a breakpoint, aSingle Step tool bar button can be used to execute a single block andthen stop. The color of the block that is about to be executed changesto yellow. When single-stepping through a chart, any subcharts that arestepped into or out of open or close automatically in the same window inorder to display the active block. When a chart stops at a breakpoint, aRun To Cursor tool bar button can be used to restart execution and havethe chart run until it reaches the selected block. This feature can beused to step over subchart calls by running to the block immediatelyfollowing the subchart block.

[0054] When a chart reaches a breakpoint and execution stops, theruntime system continues to execute the device input/output scan. Thisfeature can be disabled by toggling a Scan I/O During Single Step Modetool bar button off. When using real inputs and outputs, this optionshould typically remain enabled to prevent device timeouts fromoccurring while single-stepping through a chart. By default, whenexecution of a chart stops at a breakpoint, only the chart containingthe breakpoint stops - all other charts continue to run normally. Thisfeature can be disabled by toggling a Run Charts During Single Step Modetool bar button off. The Run Charts During Single Step Mode shouldtypically remain enabled when working with real devices to preventunwanted and possible dangerous side effects when all charts suddenlystop. Caution should be used when disabling this feature.

[0055] In summary, the machine programming and control system 130according to the present invention includes the means for editing andgenerating 142 a continuous multi-block flowchart representing a programfor controlling the operations of a machine 140, the means 136 fordisplaying the flowchart, continuous and contiguous portions of theflowchart containing more than one flowchart block being displayed, themeans for directly compiling 148 the program from the flowchart, and themeans for executing 144 the compiled program represented by theflowchart such that the machine is controlled in accordance with adisplayed flowchart. The computer 132 in the system 130 includes themeans for editing and generating 142 connected to the machine 140 andthe display means 136 connected to the means for editing and generating142 and including the screen 150, 152 divided into a plurality ofcolumns 154 and rows 156 for displaying the flowchart with each block ofa plurality of blocks 158, 160, 162 being positioned at an associatedintersection of one of the columns and one of the rows.

[0056] The method of machine programming and control according to thepresent invention includes editing and generating a continuousmulti-block flowchart representing a program for controlling theoperations of a machine, displaying the flowchart, continuous andcontiguous portions of the flowchart containing more than one flowchartblock being displayed, directly compiling the program from theflowchart, and executing the compiled program represented by theflowchart such that the machine is controlled in accordance with adisplayed flowchart. The method further includes the steps of: a.providing the computer 132 including the means for editing andgenerating 142 a continuous multi-block flowchart representing a programfor controlling the operations of the machine 140 connected to thecomputer; b. providing the display means 136 connected to the means forediting and generating 142; and c. displaying the screen 150, 152 on thedisplay means 136 divided into a plurality of columns 154 and rows 156for displaying the flowchart with each block of a plurality of blocks158, 160, 162 being positioned at an associated intersection of one ofthe columns and one of the rows.

[0057] The invention has been described in an illustrative manner, andit is to be understood that the terminology which has been used isintended to be in the nature of words of description rather than oflimitation.

[0058] Obviously, many modifications and variations of the presentinvention are possible in light of the above teachings. It is,therefore, to be understood that within the scope of the appendedclaims, wherein reference numerals are merely for convenience and arenot to be in any way limiting, the invention may be practiced otherwisethan as specifically described.

What is claimed is:
 1. A machine programming and control system (130)including means for editing and generating (142) a continuousmulti-block flowchart representing a program for controlling theoperations of a machine (140), means (136) for displaying the flowchart,continuous and contiguous portions of the flowchart containing more thanone flowchart block being displayed, means for directly compiling (148)the program from the flowchart, and means for executing (144) thecompiled program represented by the flowchart such that the machine iscontrolled in accordance with a displayed flowchart, comprising: acomputer (132) including means for editing and generating (142) acontinuous multi-block flowchart representing a program for controllingthe operations of a machine (140) connected to said computer; and adisplay means (136) connected to said means for editing and generating(142) and including a screen (150, 152) divided into a plurality ofcolumns (154) and rows (156) for displaying the flowchart with eachblock of a plurality of blocks (158, 160, 162) being positioned at anassociated intersection of one of said columns and one of said rows. 2.The system (130) according to claim 1 wherein said columns (154) aredisplayed by said display means (136) with a width automaticallydetermined by said computer (132) according to a size and spacing ofsaid blocks (158, 160, 162).
 3. The system (130) according to claim 1wherein said rows (156) are displayed by said display means (136) with aheight automatically determined by said computer (132) according to asize and spacing of said blocks (158, 160, 162).
 4. The system (130)according to claim 1 wherein said computer (132) automatically generateshigh level source code for the program from the flowchart.
 5. The system(130) according to claim 1 wherein said computer (132) automaticallydraws a connecting line between two associated ones of said blocks (158,160, 162) after editing.
 6. The system (130) according to claim 1wherein said computer (132) causes said display means (136) to displaysaid blocks (158, 160, 162) with a first color and display a selectedone of said blocks with a second color.
 7. The system (130) according toclaim 1 wherein said computer (132) causes said display means (136) todisplay all of said blocks (158, 160, 162) dependent from said selectedone of said blocks with a third color.
 8. The system (130) according toclaim 1 wherein said computer (132) causes said display means (136) todisplay a split screen (164) having two portions (166, 168) andselectively displaying said blocks (158, 160, 162) in at least one ofsaid portions.
 9. The system (130) according to claim 1 wherein saidcomputer (132) causes said display means (136) to form a debuggingwindow (170) for displaying said blocks (158, 160, 162) and having atool bar (172) for controlling program flow.
 10. The system (130)according to claim 1 wherein said tool bar (172) includes a ToggleLabels button (176) and said computer (132) responds to actuation ofsaid button for switching between default labels and alternate labelsdisplayed for said blocks (158, 160, 162).
 11. The system (130)according to claim 1 wherein said tool bar (172) includes a SelectActive Block button (178) and said computer (132) responds to actuationof said button for displaying a currently active one of said blocks(158, 160, 162).
 12. The system (130) according to claim 1 wherein saidtool bar (172) includes an Insert/Remove breakpoint button (182) andsaid computer (132) responds to actuation of said button for displayinga currently active one of said blocks (158, 160, 162) in a predeterminedcolor and stopping execution of the program before executing saidcurrently active block.
 13. The system (130) according to claim 13wherein when the program reaches one of said blocks (158, 160, 162)having a breakpoint, said computer (132) responds by changing saidpredetermined color to another predetermined color.
 14. A method ofmachine programming and control including editing and generating acontinuous multi-block flowchart representing a program for controllingthe operations of a machine, displaying the flowchart, continuous andcontiguous portions of the flowchart containing more than one flowchartblock being displayed, directly compiling the program from theflowchart, and executing the compiled program represented by theflowchart such that the machine is controlled in accordance with adisplayed flowchart, the method comprising the steps of: a. providing acomputer (132) including means for editing and generating (142) acontinuous multi-block flowchart representing a program for controllingthe operations of a machine (140) connected to the computer; b.providing a display means (136) connected to the means for editing andgenerating (142); and c. displaying a screen (150, 152) on the displaymeans (136) divided into a plurality of columns (154) and rows (156) fordisplaying the flowchart with each block of a plurality of blocks (158,160, 162) being positioned at an associated intersection of one of saidcolumns and one of said rows.
 15. The method according to claim 14including displaying said columns (154) with a width automaticallydetermined by the computer (132) according to a size and spacing of theblocks (158/60w 162).
 16. The method according to claim 14 includingdisplaying said rows (156) with a height automatically determined by thecomputer (132) according to a size and spacing of the blocks (158, 160,162).